package com.landun.market.repository;

import com.landun.market.pojo.model.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author jiang.chuan
 * @date 2018-05-11
 */
@Repository
public interface IUserRepository extends IBaseRepository<User, Integer> {
    /**
     * 查询所有用户
     *
     * @return 所有用户（包括无效用户）
     */
    List<User> findAll(@Param("keyword") String keyword);

    /**
     * 根据登陆名，手机或邮箱登陆
     *
     * @param userType   用户类型
     * @param identifier 登陆名，手机或邮箱
     * @return 查询到的唯一用户
     */
    User findByLogin(@Param("userType") Integer userType, @Param("identifier") String identifier);

    /**
     * 检查登陆信息是否重复
     *
     * @param identifier 登陆名，手机或邮箱
     * @param excludedId 要排除的用户ID
     * @return 查询到的用户个数
     */
    Integer countByIdentifier(@Param("identifier") String identifier, @Param("excludedId") Integer excludedId);

    /**
     * 更新用户的登录信息
     *
     * @param userId 用户ID
     * @param host   登录时使用的IP
     */
    Integer updateLastLoginInfo(@Param("userId") long userId, @Param("host") String host);

    /**
     * 修改用户密码
     *
     * @param userId   用户ID
     * @param password 新密码
     */
    Integer updatePassword(@Param("userId") long userId, @Param("password") String password);

    /**
     * 更新用户有效期
     *
     * @param userId     用户ID
     * @param expiryTime 过期时间
     */
    Integer updateExpiryTime(@Param("userId") long userId, @Param("expiryTime") Date expiryTime);
}